//算法相关
//给定一个字符串s，请你找出其中不含有重复字符得最长子串的长度和字符串
function getLongestSubString(s){
    //set 存储值
    let map = new Map();
    //记录当前最大长度
    let max = 0;
    //左指针 指向当前最长字符串开始的字符
    let left = 0;
    for(let i=0;i<s.length;i++){
        //如果存在当前字符，并且当前字符在最长开始字符的后面，指针指向已经存在字符的下一个字符
        if(map.has(s[i])&& map.get(s[i])>=left){
            left = map.get(s[i]) + 1;   
            console.log(s[i],left);
        }
        map.set(s[i],i);
        max = Math.max(max,i-left+1);  //对上一次最长字符长度和这一次最长字符做比较
    }
    return max;
}
console.log(getLongestSubString("gasiugfiusgmnpq"));
//left 0 map [g,0]  max 1                                       i=0
// left =0 map [g,0] [a,1] max =2                               i=1
// left =0 map [g,0] [a,1][s,2] max =3                          i=2
// left =0 map [g,0] [a,1][s,2][i,3] max =4                     i=3
// left =0 map [g,0] [a,1][s,2][i,3][u,4] max =5                i=4
// left =1 map       [a,1][s,2][i,3][u,4][g,5] max = 5          i=5
// left =1 map       [a,1][s,2][i,3][u,4][g,5][f,6] max = 6     i=6
// left = 4          [a,1][s,2][i,7][u,4][g,5][f,6]   max = 6,7-4+1         i=7
